package com.alpha.dao.interfaces;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.naming.NamingException;

import com.alpha.bom.Exam;
import com.alpha.bom.RealExam;

public interface IExamDao {
	
	public Exam retrieveExamById(int examId) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveExamByProfessorId(int professorId) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveCompleteExamsByByProfessorId(int professorId) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveExamByProfessorId(int professorId, boolean real) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveAllPracticeExams() throws SQLException, NamingException;
	public ArrayList<Exam> retrieveExamByCategory(int professorId, String category, boolean real) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveExamByCategory(int professorId, String category) throws SQLException, NamingException;
	public ArrayList<Exam> retrieveExamByStudentId(int studentId) throws NamingException, SQLException;
	public ArrayList<Exam> retrieveUntakenExamByStudentId(int studentId) throws NamingException, SQLException;
	public int retrieveLatestExamStudentId(int examId, int studentId) throws NamingException, SQLException;
	public boolean insertExam(Exam exam) throws NamingException, SQLException;
	public boolean insertExamStudent(int studentId, int examId) throws NamingException, SQLException;
	public boolean updateExam(RealExam exam) throws NamingException, SQLException;

}
